import { defHttp } from '@/utils/http';
import type { UserProfile } from './model';
import { uniqueId } from 'lodash-es';
import { base64StringToFile } from '@/utils/file';
// import { ContentTypeEnum } from '@/enums/httpEnum';

enum Api {
  root = '/system/user/profile',
  updatePassword = '/system/user/profile/updatePwd',
  updateAvatar = '/system/user/profile/avatar',
}

/**
 * 用户个人主页信息
 * @returns
 */
export function userProfile() {
  return defHttp.get<UserProfile>({ url: Api.root });
}

/**
 * 更新用户个人主页信息
 * @param data
 * @returns
 */
export function userProfileUpdate(data: any) {
  return defHttp.putWithMsg<void>({ url: Api.root, data });
}

/**
 * 用户修改密码
 * @param data
 * @returns
 */
export function userUpdatePassword(data: any) {
  return defHttp.put<void>({ url: Api.updatePassword, data }, { encrypt: true });
}

/**
 * 用户更新个人头像
 * @param data H5返回为图片base64 /  小程序返回为文件路径比如 /tmp/xxx
 * @returns
 */
export function userUpdateAvatar(fileContent: string) {
  if (fileContent && fileContent.startsWith('data:image')) {
    return defHttp.uploadFile<{ imgUrl: string }>({
      url: Api.updateAvatar,
      file: base64StringToFile(fileContent, uniqueId() + '.png'),
      name: 'avatarfile',
    });
  }
  return defHttp.uploadFile<{ imgUrl: string }>({
    url: Api.updateAvatar,
    filePath: fileContent,
    name: 'avatarfile',
  });
}
